package com.edu.exam.entity.core;

import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import lombok.EqualsAndHashCode;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

/**
 * 审计实体抽象基类
 * 所属模块：F-07 基础数据管理模块
 * 继承BaseEntity，添加审计相关字段
 *
 * @author System
 * @version 1.0.0
 */
@MappedSuperclass
@EqualsAndHashCode(callSuper = true)
@EntityListeners(AuditingEntityListener.class)
public abstract class AuditableEntity extends BaseEntity {

    /**
     * 状态字段，子类可以根据需要重写
     */
    protected String status = "ACTIVE";

    /**
     * 备注
     */
    protected String remarks;

    /**
     * 获取状态
     *
     * @return 状态
     */
    public String getStatus() {
        return status;
    }

    /**
     * 设置状态
     *
     * @param status 状态
     */
    public void setStatus(String status) {
        this.status = status;
    }

    /**
     * 获取备注
     *
     * @return 备注
     */
    public String getRemarks() {
        return remarks;
    }

    /**
     * 设置备注
     *
     * @param remarks 备注
     */
    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    /**
     * 判断是否为激活状态
     *
     * @return 是否为激活状态
     */
    public boolean isActive() {
        return "ACTIVE".equals(status);
    }

    /**
     * 判断是否为非激活状态
     *
     * @return 是否为非激活状态
     */
    public boolean isInactive() {
        return "INACTIVE".equals(status);
    }

}